In modern computer systems, communication between users is provided through a variety of software applications. Two of the most popular are instant messaging and electronic mail (“email”). As it is generally known, instant messaging systems are an example of what are referred to as “synchronous” communication systems. In synchronous communication systems, communication is possible only between users that are simultaneously online. Electronic mail is an example of what are referred to as “asynchronous” communication systems, in which messages can be sent from a sending user to a receiving user regardless of whether both users are currently online. When an email message is sent to a user that is currently unavailable for synchronous communications, the email software receives the message on behalf of the user, and stores it for later retrieval. When the unavailable user subsequently goes online, he or she can retrieve the stored message by accessing it from an Inbox data structure or the like.
A problem may arise when a user of a synchronous communication system tries to communicate with another user that is either not currently online, or has indicated to their communication software that they are not to be disturbed by synchronous messages. In existing systems, such a situation may prevent the user wishing to send the message from sending the message using their current or preferred synchronous communication application. Moreover, if a synchronous communication system user begins entering a lengthy message for another user who is initially online, but then subsequently becomes disconnected before the message is completely entered and sent, the entered message may not be deliverable using the synchronous communication system. Under these circumstances, the sending user may have to completely re-enter the message into the synchronous communication application later when the other user is online. Alternatively, the sending user may have to cut or otherwise extract the entered message from the synchronous communication system, and then paste it into a message entry interface of a separate, asynchronous communication application, such as an email application. While some existing synchronous messaging systems provide a notification indicating when the other goes online, the user attempting to send the synchronous message may themselves not be online at that later time. These problems are increasing significant in view of the growing popularity of instant messaging services, such as AOL's Instant Messenger (AIM), AOL's ICQ, Microsoft's MSN Messenger/Windows Messenger and Yahoo! Messenger, and others such as Cerulean Studio's Trillian, which is a single instant messaging program that works with all of these services, as well as the Internet's traditional IRC (Internet Relay Chat) chat rooms.
For the above reasons and others, it would be desirable to have a new communication system that blends features of synchronous and asynchronous communication systems to allow online users to more conveniently communicate with offline users without having to manually switch between multiple, independent application programs, and/or having to re-enter or move message content from a synchronous communication system message interface to a message entry interface of an asynchronous communication system.